package miage.m1.poo.navigation;

import java.awt.*;
import java.io.File;

import javax.swing.*;

/**
 * Cette classe correspond au Panel que l'on inserera dans la fenetre principale
 * pour l'affichage des fichiers contenus dans un dossier de notre arborescence.
 * 
 * @author Yahn, Mahamoud, Nafissa, Helene
 *
 */


public class PluginNavigation extends JPanel{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Image que l'on met dans le JPanel accompagnant le fichier
	 */
	private ImageIcon ii = new ImageIcon("src/fichier/fichier.png");

	/**
	 * Entier qui sert a calculer le nombre de fichiers dans un dossier
	 */
	private int count = 0;

	/**
	 * Tableau contenant le nom et le fichier de chaque fichier contenu dans le dossier (au maximum 1000)
	 */
	private JLabel[] jl = new JLabel[1000];

	/**
	 * Constructeur
	 */
	public PluginNavigation() {
		super();
	}

	/**
	 * Methode permettant de recuperer les fichiers d'un dossier passe en parametre
	 * et permettant de les integrer dans un tableau de JLabel qui sera lui-meme
	 * integre dans le Panel que l'on implemente
	 * 
	 * @param f
	 * Dossier que l'on souhaite parcourir
	 * 
	 * @see PluginNavigation#count
	 * @see PluginNavigation#ii
	 * @see PluginNavigation#jl
	 */
	protected void afficherFichiers(File f){
		if (f.isDirectory()){
			File[] files = f.listFiles();
			for(int i=0;i<files.length;i++){
				if(files[i].isFile()){
					jl[count] = new JLabel(files[i].getName(), (Icon)ii, 0);
					count++;
				}
			}
			if(count>50){
				this.setLayout(new GridLayout(count/5,count%5));
			}else{
				this.setLayout(new GridLayout(count/2,count%2));
			}
			this.setBackground(Color.WHITE);
			for(int i =0; i < count;i++){
				this.add(jl[i]);
			}
			this.validate();
		}else{
			System.err.println("Vous avez donne en parametre un fichier ou un dossier invalide");
		}
	}

}
